package com.example.fish.controller;

import com.example.fish.controller.ex.LoginException;
import com.example.fish.service.ex.*;
import com.example.fish.utils.JsonResult;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.ExceptionHandler;

import javax.servlet.http.HttpSession;
//控制层类的基类
@CrossOrigin // 跨域
public class BaseController {
    //    操作成功的状态码
    public static final Integer OK=200;

    //    操作失败的代码
//    请求处理方法，返回值就是需要传递给前端的数据
    @ExceptionHandler({ServiceException.class}) // 用于统一处理抛出的异常
    public JsonResult<Void> handleException(Exception e){
        JsonResult<Void> jsonResult=new JsonResult<>(e);
        if (e instanceof UserExistsException){
            jsonResult.setState(4000);
            jsonResult.setMessage("用户已被注册");
        } else if (e instanceof UserInsertException) {
            jsonResult.setState(4001);
            jsonResult.setMessage("注册时产生未知错误！");
        } else if (e instanceof UserNotExistsException) {
            jsonResult.setState(4002);
            jsonResult.setMessage("账号或密码发生错误！");
        }else if (e instanceof LoginException){
            jsonResult.setState(4003);
            jsonResult.setMessage("登录发生错误");
        }else if (e instanceof UserUpdateException){
            jsonResult.setState(4004);
            jsonResult.setMessage("更新个人信息时产生未知错误！");
        } else if (e instanceof UserUpdateAvatorException) {
            jsonResult.setState(4005);
            jsonResult.setMessage("图片更新失败!");
        } else if (e instanceof FileUploadException) {
            jsonResult.setState(4006);
            jsonResult.setMessage("文件上传失败!");
        } else if (e instanceof GearInsertException) {
            jsonResult.setState(4007);
            jsonResult.setMessage("渔具信息保存失败！");
        } else if (e instanceof GearDeleteException) {
            jsonResult.setState(4008);
            jsonResult.setMessage("渔具信息删除失败！");
        }else if (e instanceof GearUpdateException){
            jsonResult.setState(4009);
            jsonResult.setMessage("渔具信息修改失败！");
        } else if (e instanceof BlogNotFindException) {
            jsonResult.setState(4010);
            jsonResult.setMessage("博客信息未找到！");
        } else if (e instanceof BlogInsertOrUpdateException) {
            jsonResult.setState(4011);
            jsonResult.setMessage("添加或修改失败！");
        } else if (e instanceof BlogDeleteException) {
            jsonResult.setState(4012);
            jsonResult.setMessage("删除失败");
        } else if (e instanceof BlogAgreeOrDisagreeException) {
            jsonResult.setState(4013);
            jsonResult.setMessage("点赞功能操作失败");
        }else if (e instanceof CommentPublishException){
            jsonResult.setState(4014);
            jsonResult.setMessage("评论发布发生错误");
        }else if (e instanceof LikeInfoException){
            jsonResult.setMessage("点赞相关的错误");
            jsonResult.setState(4015);
        } else if (e instanceof SecretInsertException) {
            jsonResult.setState(4016);
            jsonResult.setMessage("秘籍保存失败");
        } else if (e instanceof CollectionExistsException) {
            jsonResult.setState(4017);
            jsonResult.setMessage("收藏已存在");
        } else if (e instanceof CollectionInsertException) {
            jsonResult.setState(4018);
            jsonResult.setMessage("收藏失败");
        } else if (e instanceof EventSignException) {
            jsonResult.setMessage("报名人数超出");
            jsonResult.setState(4019);
        } else if (e instanceof EventAlreadySignedException) {
            jsonResult.setState(4020);
            jsonResult.setMessage("您已经报名过了");
        }else if (e instanceof SignDoNotExistException){
            jsonResult.setState(4021);
            jsonResult.setMessage("报名记录不存在");
        }else if (e instanceof EventNotFoundException){
            jsonResult.setMessage("未找到该活动信息");
            jsonResult.setState(4022);
        }else if (e instanceof WorkInsertException){
            jsonResult.setState(4023);
            jsonResult.setMessage("参赛数据保存失败");
        }else if (e instanceof SendMessageException){
            jsonResult.setMessage("信息发送出错");
            jsonResult.setState(4024);
        }
        return jsonResult;
    }


}
